/**
 * @chatset utf-8
 * atearsan/2013-10-25
 * osc: http://my.oschina.net/atearsan
 * 
 * content.js是与页面内容交互的js
 * 
 * todolist
 * 	//1. 屏蔽列表可配置(硬编码)
 *  //2. 屏蔽页面可配置(硬编码)
 *  //3. 加入icon
 *  //4. 最好能做到浏览器端可直接配置(pop)  [2015年 2月 2日 星期一 完成, 不是pop]
 *  5. pop可以取消屏蔽, 取消屏蔽的用户信息用红线框表示
 *  //6. 添加问答页屏蔽规则
 *  //7. 屏蔽页面的定义没必要用数组定义, 直接改成indexOf就可以的 
 *  //8. 其他页面屏蔽规则逐步完善    (首页、新闻)
 *  //9. 打包成crx
 *	//10. 发布到Chrome Web Store... 不过我现在登录的时候翻不过去- -[更新WiKi: http://open.chrome.360.cn/extension_dev/autoupdate.html]
 *  //10.1 要钱... 所以我不发布 - -! 如果有人有的话 可以顺带发布 - -
 * 
 * 随手日记
 * >2015年 2月 8日 星期日
 * 今天又看了下Markdown 重新编辑了下README.md  练练这个语法
 * 
 * >2015年 2月 2日 星期一
 * 完成黑名单可以配置的逻辑
 *
 * >2015-02-01 星期天
 * 今天下午嗑了两个小时瓜子 舌头起泡了 
 * 添加首页最新动弹、首页热门动弹、新闻 页面的屏蔽逻辑
 * 局(菊)部重构代码, 更改#main函数里判断是否是osc页面的逻辑
 * 修复地址栏icon不显示屏蔽数量的bug
 * 
 * >2015-01-25
 *  添加问答页面屏蔽逻辑
 *
 * >2013-10-25
 *  我就是讨厌柳天赐(hjin)那厮, 发广告讨嫌. 写这玩意就是屏蔽他
 */

var $url = location.href;

// 黑名单列表(格式:http://my.oschina.net/xxx)
var $blackList=[];
function main() {
	// 加载配置信息
	chrome.storage.sync.get("osc_oscer_block", function(item) {
		//console.log(item.osc_oscer_block);
		$blackList = item.osc_oscer_block.split(";");
		
		// 开始执行逻辑处理 
		afterLoadBlacklist();
	});
}; // #END main

function afterLoadBlacklist() {
	if(isOsc("oschina.net")) {
		if($url == 'http://www.oschina.net/') {
			onIndexPage();// 首页
		}
		else if($url == 'http://www.oschina.net/tweets') {
			onMoreTweet();// 更多动弹
		}
		else if(isOsc('/news/')) {
			onNews();// 新闻
		}
		else if(isOsc('/tweet/')) {
			onTweet();// 动弹
		}
		else if(isOsc("/question/")) {
			onQuestion();// 问答页面
		}
		else if(isOsc("/code/")) {
			onCode();// 代码分享
		}
		else if(isOsc("/job/")) {
			onJob();// 招聘
		}
		// 代码分享、招聘板块就懒得写了...因为那边评论的人少啊 - -    而且, 很少有人去吐槽分享的代码
	} // #END if osc
}

function isOsc(urlKeyWord) {
	return $url.indexOf(urlKeyWord) > 0;
};

// 首页
function onIndexPage() {
	var count = 0;
	for(i in $blackList) {
		// 最新动弹
		var elements = $('.TopTweets .user').find('a[href$="' + $blackList[i] + '"]');
		for(var j = 0; j < elements.length; j++) {
			var ele = $(elements[j]).parent().parent();
			ele.parent().empty().remove();
			
			count++;
		}

		// 热门动弹
		var elements = $('.HotTweets .user').find('a[href$="' + $blackList[i] + '"]');
		for(var j = 0; j < elements.length; j++) {
			var ele = $(elements[j]).parent().parent();
			ele.parent().empty().remove();
			
			count++;
		}
	}
	
	sendRequest(count);
}; // #END onIndexPage

// 新闻
function onNews() {
	var count = 0;
	for(i in $blackList) {
		var elements = $('.portrait').find('a[href$="' + $blackList[i] + '"]');
		for(var j = 0; j < elements.length; j++) {
			var ele = $(elements[j]).parentsUntil('table').parent();
			ele.parent().empty().remove();
			
			count++;
		}
	}
	
	sendRequest(count);
}

// 动弹
function onTweet() {
	var count = 0;
	for(i in $blackList) {
		var elements = $('#TweetReplies .TweetReplyBody').find('a[href$="' + $blackList[i] + '"]');
		for(var j = 0; j < elements.length; j++) {
			var ele = $(elements[j]).parentsUntil('table[class*="ostable"]').parent();
			ele.parent().empty().remove();
			
			count++;
		}
	}
	
	sendRequest(count);
}; // #END onTweet

// 更多动弹
function onMoreTweet() {
	var count = 0;
	for(i in $blackList) {
		// 大家都在动弹什么  && Top 10
		var elements = $('a[class*="portrait"][href$="' + $blackList[i] + '"]');
		for(var j = 0; j < elements.length; j++) {
			//var ele = $(elements[j]).parent();
			$(elements[j]).parent().empty().remove();
			//ele.parent().empty().remove();
			
			count++;
		}
	}
	
	sendRequest(count);
}; // #END更多动弹


// 问答
function onQuestion() {
	var count = 0;
	for(i in $blackList) {
		var elements = $('.user_info').find('a[href$="'+ $blackList[i] +'"]');	
		for(var j = 0; j < elements.length; j++) {
			var ele = $(elements[j]).parentsUntil('li[class*="Answer"]').parent();
			ele.prev().empty().remove(); // 投票 & 反对
			ele.next().empty().remove(); // 横线
			ele.empty().remove(); 		// 回答内容    (PS: 被引用回答的不会被删除 - -)
			
			count++;
		}
		
		// 回帖中的评论
		var elements = $('li[id^="PostReply"] > a[href$="'+ $blackList[i] +'"]');	
		for(var j = 0; j < elements.length; j++) {
			var liSize = $(elements[j]).parent().parent().children().length;
			if(liSize == 1) {
				// 把 评论 的整个布局都删掉
				$(elements[j]).parentsUntil('div[class*="replies"]').parent().empty();//.remove();
			} else {
				// 只删除单个评论
				var ele = $(elements[j]).parent().empty().remove();
			}			
			count++;
		}
	}
	
	sendRequest(count);
}; // #END onQuestion

// 代码分享
function onCode() {
	var count = 0;
	for(i in $blackList) {
		var elements = $('.portrait').find('a[href$="'+ $blackList[i] +'"]');	
		for(var j = 0; j < elements.length; j++) {
			var ele = $(elements[j]).parentsUntil('li').parent();
			ele.empty().remove();
			
			count++;	
		}
	}
	
	sendRequest(count);
}; // #END onCode

// 招聘
function onJob() {
	// 评论样式和代码分享的一样, 直接调用onCode
	onCode();
}; // #END onJob

// 更新插件栏icon, 显示屏蔽了几个
function sendRequest(blockCount) {
	var json = {"action": "iconMsg", "blockCount": blockCount};
	//console.log(json);
	chrome.extension.sendRequest(json, function(response) {
		//console.log(response.farewell);
	});
};

main();